package com.my.springboot.tuling.concurrent.thread;
/**
 * volatile有两大特性，一是可见性，二是有序性，禁止指令重排序，其中可见性就是可以让线程
 * 之间进行通信。
 **/
public class VolatileDemo {
    private static volatile boolean flag = true;
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                    if (flag){
                        System.out.println("trun on");
                        flag = false;
                    }
                }
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                    if (!flag){
                        System.out.println("trun off");
                        flag = true;
                    }
                }
            }
        }).start();
    }
}
